﻿package com.scn.base.web;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

import com.scn.base.domain.UserVO;
import com.scn.base.service.ISysMenuService;
import com.scn.base.service.ISysUserService;
import com.scn.base.util.MD5Util;

/**
 * 
 * 功能描述： 用户登录Controller
 * @author 作者 gaoxiong@softscn.com
 * @created Jun 7, 2012 3:18:52 PM
 * @version 1.0.0
 * @date Jun 7, 2012 3:18:52 PM
 */
@Controller
public class LoginController {
	@Autowired
	ISysUserService sysUserService;
	@Autowired
	ISysMenuService sysMenuService;
	
	public UserVO getUser(){
		UserVO userinfo=new UserVO();
		return userinfo;
	}
	/**
	 * 功能描述：登录页面
	 * @return 页面映射
	 */
	@RequestMapping(value="/blank.html")
	public String blank(){
		return "Blank";
	}
	
	/**
	 * 功能描述：登录页面
	 * @return 页面映射
	 */
	@RequestMapping(value="/index.html")
	public String loginPage(){
		UserVO user=sysUserService.selectUserByNo("admin");
		return "login";
	}
	/**
	 * 功能描述：验证码页面
	 * @return 页面映射
	 */
	@RequestMapping(value="/tokenimage.html")
	public String tokenImage(){
		return "tokenimage";
	}
	/**
	 * 功能描述：首页头部页面
	 * @return 页面映射
	 */
	@RequestMapping(value="/TopMenu.html")
	public String topMenu(){
		return "TopMenu";
	}
	/**
	 * 功能描述：首页左部
	 * @return 页面映射
	 */
	@RequestMapping(value="/LeftMenu.html")
	public String leftMenu(){
		return "LeftMenu";
	}
	/**
	 * 功能描述：首页底部
	 * @return 页面映射
	 */
	@RequestMapping(value="/Bottom.html")
	public String bottom(){
		return "Bottom";
	}
	/**
	 * 功能描述：首页桌面
	 * @return 页面映射
	 */
	@RequestMapping(value="/Desktop.html")
	public String desktop(){
		return "Desktop";
	}
	/**
	 * 功能描述：用户鉴权页面
	 * @return 页面映射
	 */
	@RequestMapping(value="/Authority.html")
	public String authority(){
		return "Authority";
	}
	
	/**
	 * 功能描述：用户鉴权页面
	 * @return 页面映射
	 */
	@RequestMapping(value="/MainFrame.html")
	public String mainFrame(){
		return "MainFrame";
	}
	
	/**
	 * 功能描述：用户登录
	 * @param userno
	 * @param userpass
	 * @param checkPwd
	 * @param session
	 * @return 模型视图
	 */
	@RequestMapping(value="/doLogin.html")
	public ModelAndView login(String userno,String userpass,String checkPwd,HttpSession session){
		UserVO userinfo=sysUserService.selectUserByNo(userno);
		 if(userno.equals("")||userpass.equals("")||checkPwd.equals("")){
			 return new ModelAndView("login","error","错误1！");
		 }
		 if(!checkPwd.equals(session.getAttribute("TOKEN").toString())){
			 return new ModelAndView("login","error","错误2！");
		 }
		 if(userinfo==null){
			 return new ModelAndView("login","error","错误3！");
		 }
		 if(!userinfo.getUserpass().equals(MD5Util.md5Encrypt(userpass))){
			 
			 return new ModelAndView("login","error","错误4！");
		 }
		 List userMenu=sysMenuService.selectMenu();
		 session.setAttribute("userinfo", userinfo);
		 session.setAttribute("userMenu", userMenu);
		 return new ModelAndView("redirect:MainFrame.html");
	}
	/**
	 * 功能描述：修改用户密码
	 * @param userno	用户名称
	 * @param newpass	用户密码
	 */
	@RequestMapping(value="/updatePass.html")
	public ModelAndView updatePass(String userno,String newpass){
		 UserVO userInfo=sysUserService.selectUserByNo(userno);
//		 if(getUserpass().equals("")||getCheckPwd().equals("")||getUserno().equals("")){
//			 act.put("loginmes", getText("login_username_empty"));
//			 return INPUT;
//		 }
//		 if(!getCheckPwd().equals(act.getSession().get("TOKEN"))){
//			 act.put("loginmes", getText("login_suijima_error"));
//			 return INPUT;
//		 }
//		 if(userInfo==null){
//			 act.put("loginmes", "不存在此用户！");
//			 return INPUT;
//		 }
//		 if(!userInfo.getUserpass().equals(MD5Util.md5Encrypt(getUserpass()))){
//			 act.put("loginmes", "密码错误！");
//			 return INPUT;
//		 }
//		act.put("userInfo", userInfo);
		 
		 //修改用户密码
		 Map<String,String> pwdMap=new HashMap<String,String>(2);
		 pwdMap.put("new_userpass", userInfo.getUserpass());
		 pwdMap.put("new_userpass", newpass);
		 sysUserService.updatePwd(pwdMap);
		 return new ModelAndView("login");
	}
	/**
	 * 功能描述：
	 * @param 参数说明
	 * @return 返回值
	 * @throw 异常描述
	 * @see 需要参见的其它内容
	 */
	@RequestMapping(value="/logout.html")
	public ModelAndView logout(SessionStatus sessionStatus){
		sessionStatus.setComplete();
		return new ModelAndView("login");
	}
}
